﻿using Basic.FlowModel.DB;
using Basic.FlowModel.Node;
using Basic.FlowRemoteModel.FlowNode.Model;

namespace Basic.FlowCollect
{
    public interface IFlowNodeCollect
    {
        void Set ( ToNoteBase[] datas );
        Result[] Gets<Result> ( long flowId ) where Result : class, new();
        Result[] Gets<Result> ( long[] ids ) where Result : class, new();
        long Add ( FlowNodeAdd data );
        void Clear ( long flowId );
        DBFlowNode Get ( long id );
        bool Set ( DBFlowNode sour, FlowNodeSet set );

        bool SetForm ( DBFlowNode sour, FlowNodeForm set );

        bool Set ( DBFlowNode sour, BeginNodeSet set );

        void Delete ( DBFlowNode sour );
        void SetCoordinate ( DBFlowNode sour, ImgPoint point );
        Dictionary<long, string> GetNames ( IEnumerable<long> nodeIds );
        bool SetIntoOut ( DBFlowNode sour, FlowNodeIntoOut datum );
        ToNoteBase[] GetsToNode ( long fromNodeId );
        Result Get<Result> ( long id ) where Result : class, new();
        void SetIntoFormula ( long id, IntoFormula[] intoFormula );
        long[] GetsFormId ( long flowId );
    }
}